package plp.orientadaObjetos2.memoria;

import plp.expressions2.memory.VariavelNaoDeclaradaException;
import plp.orientadaObjetos1.expressao.leftExpression.Id;
import plp.orientadaObjetos1.expressao.valor.Valor;
import plp.orientadaObjetos1.memoria.ContextoObjeto;
import plp.orientadaObjetos1.memoria.Objeto;

public class ObjetoNativo extends Objeto {

	private Object objetoNativo;

	public ObjetoNativo(Id classeObjeto, Object objeto) {
		super(classeObjeto, null);
		this.objetoNativo = objeto;
	}

	@Override
	public Id getClasse() {
		return super.getClasse();
	}

	@Override
	public ContextoObjeto getEstado() {
		throw new UnsupportedOperationException("Impossivel obter estado de objeto nativo");
	}

	@Override
	public void setEstado(ContextoObjeto novoEstado) {
		throw new UnsupportedOperationException("Impossivel setar estado de objeto nativo");
	}

	@Override
	public void changeAtributo(Id idVariavel, Valor valor)
			throws VariavelNaoDeclaradaException {
		throw new VariavelNaoDeclaradaException(idVariavel);
	}

	public Object getObjetoNativo() {
		return objetoNativo;
	}

}
